package javax;

public class Demo1 {
    public static void longestsumofk1(int arr[],int k)
    {
        if(arr==null||arr.length==0)
            return;
        int left=0,right=0;
        int sum=arr[0];
        int d=0;
        //初始时将sum赋值为arr[right].
        while(right<arr.length)
        {
            if(sum==k)
            {
                //如果sum==k打印left-right之间的子数组    sum是区间left-right元素的和
                for(int i=left;i<=right&&right-i>d;i++)
                    System.out.print(arr[i]+" ");
                System.out.println();
                left++;
                //向右压缩区间sum的值减小。
            }
            else if(sum<k)
            {
                right++;
                if(right==arr.length)
                    break;
                sum+=arr[right];
                //如果sum的值<k向右扩展区间，使得sum值增大
            }
            else {
                //否则利用left向右压缩区间。sum值减小。
                sum-=arr[left];
                left++;
            }
        }
    }
}
